const user = require("../service/user");
const ApiResult = require("../common/ApiResult");
const JWT = require("../common/JWT");
// 测试用户
const simulateUser = {
  username: "曾小晨",
  mobile: "19907313843",
  pwd: "1234567890"
};
module.exports = {
  /**
   * 1. 登陆时，客户端发送用户名密码
   * 2. 服务端验证用户名密码是否正确，校验通过就会生成一个有时效的 token 串，发送给客户端
   * 3. 客户端储存token,一般都会存储在 localStorage 或者 cookie 里面
   * 4. 客户端每次请求时都带有 token，可以将其放在请求头里，每次请求都携带token
   * 5. 服务端验证 token，所有需要校验身份的接口都会被校验 token，若 token 解析后的数据包含用户身份信息，则身份验证通过，返回数据
   * @param ctx
   * @returns {Promise<void>}
   */
  login: async function(ctx) {
    // 用户信息
    // const userInfo = ctx.request.body;
    ctx.status = 200;
    ctx.body = {
      code: 200,
      message: "成功",
      data: {
        ...simulateUser,
        token: JWT.sign(simulateUser.mobile)
      }
    };
  },
  getUserById: async function(ctx) {
    // /user?id=1 -> ctx.query
    // /user/:id -> ctx.params
    const { id } = ctx.query;
    if (!id) {
      ctx.body = ApiResult.ERROR("id不合法");
      return;
    }
    const rep = await user.getUserById(id);
    if ("data" in rep) {
      ctx.body = ApiResult.SUCCESS(rep.data);
      return;
    }
    ctx.body = ApiResult.ERROR(rep.message);
  },
  getUserList: async function(ctx) {
    const rep = await user.getUserList();
    if ("data" in rep) {
      ctx.body = ApiResult.SUCCESS(rep.data);
      return;
    }
    ctx.body = ApiResult.ERROR(rep.message);
  }
};
